home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / hdsmart.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  125 lines

  1. /*
  2.  * linux/include/linux/hdsmart.h
  3.  *
  4.  * Copyright (C) 1999-2000    Michael Cornwell <cornwell@acm.org>
  5.  * Copyright (C) 2000        Andre Hedrick <andre@linux-ide.org>
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2, or (at your option)
  10.  * any later version.
  11.  *
  12.  * You should have received a copy of the GNU General Public License
  13.  * (for example /usr/src/linux/COPYING); if not, write to the Free
  14.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15.  */
  16.  
  17. #ifndef _LINUX_HDSMART_H
  18. #define _LINUX_HDSMART_H
  19.  
  20. #define OFFLINE_FULL_SCAN        0
  21. #define SHORT_SELF_TEST            1
  22. #define EXTEND_SELF_TEST        2
  23. #define SHORT_CAPTIVE_SELF_TEST        129
  24. #define EXTEND_CAPTIVE_SELF_TEST    130
  25.  
  26. /* smart_attribute is the vendor specific in SFF-8035 spec */
  27. typedef struct ata_smart_attribute_s {
  28.     unsigned char            id;
  29.     unsigned short            status_flag;
  30.     unsigned char            normalized;
  31.     unsigned char            worse_normal;
  32.     unsigned char            raw[6];
  33.     unsigned char            reserv;
  34. } __attribute__ ((packed)) ata_smart_attribute_t;
  35.  
  36. /* smart_values is format of the read drive Atrribute command */
  37. typedef struct ata_smart_values_s {
  38.     unsigned short            revnumber;
  39.     ata_smart_attribute_t        vendor_attributes [30];
  40.         unsigned char            offline_data_collection_status;
  41.         unsigned char            self_test_exec_status;
  42.     unsigned short            total_time_to_complete_off_line;
  43.     unsigned char            vendor_specific_366;
  44.     unsigned char            offline_data_collection_capability;
  45.     unsigned short            smart_capability;
  46.     unsigned char            errorlog_capability;
  47.     unsigned char            vendor_specific_371;
  48.     unsigned char            short_test_completion_time;
  49.     unsigned char            extend_test_completion_time;
  50.     unsigned char            reserved_374_385 [12];
  51.     unsigned char            vendor_specific_386_509 [125];
  52.     unsigned char            chksum;
  53. } __attribute__ ((packed)) ata_smart_values_t;
  54.  
  55. /* Smart Threshold data structures */
  56. /* Vendor attribute of SMART Threshold */
  57. typedef struct ata_smart_threshold_entry_s {
  58.     unsigned char            id;
  59.     unsigned char            normalized_threshold;
  60.     unsigned char            reserved[10];
  61. } __attribute__ ((packed)) ata_smart_threshold_entry_t;
  62.  
  63. /* Format of Read SMART THreshold Command */
  64. typedef struct ata_smart_thresholds_s {
  65.     unsigned short            revnumber;
  66.     ata_smart_threshold_entry_t    thres_entries[30];
  67.     unsigned char            reserved[149];
  68.     unsigned char            chksum;
  69. } __attribute__ ((packed)) ata_smart_thresholds_t;
  70.  
  71. typedef struct ata_smart_errorlog_command_struct_s {
  72.     unsigned char            devicecontrolreg;
  73.     unsigned char            featuresreg;
  74.     unsigned char            sector_count;
  75.     unsigned char            sector_number;
  76.     unsigned char            cylinder_low;
  77.     unsigned char            cylinder_high;
  78.     unsigned char            drive_head;
  79.     unsigned char            commandreg;
  80.     unsigned int            timestamp;
  81. } __attribute__ ((packed)) ata_smart_errorlog_command_struct_t;
  82.  
  83. typedef struct ata_smart_errorlog_error_struct_s {
  84.     unsigned char            error_condition;
  85.     unsigned char            extended_error[14];
  86.     unsigned char            state;
  87.     unsigned short            timestamp;
  88. } __attribute__ ((packed)) ata_smart_errorlog_error_struct_t;
  89.  
  90. typedef struct ata_smart_errorlog_struct_s {
  91.     ata_smart_errorlog_command_struct_t    commands[6];
  92.     ata_smart_errorlog_error_struct_t    error_struct;
  93. } __attribute__ ((packed)) ata_smart_errorlog_struct_t;
  94.  
  95. typedef struct ata_smart_errorlog_s {
  96.     unsigned char            revnumber;
  97.     unsigned char            error_log_pointer;
  98.     ata_smart_errorlog_struct_t    errorlog_struct[5];
  99.     unsigned short            ata_error_count;
  100.     unsigned short            non_fatal_count;
  101.     unsigned short            drive_timeout_count;
  102.     unsigned char            reserved[53];
  103.     unsigned char            chksum;
  104. } __attribute__ ((packed)) ata_smart_errorlog_t;
  105.  
  106. typedef struct ata_smart_selftestlog_struct_s {
  107.     unsigned char            selftestnumber;
  108.     unsigned char            selfteststatus;
  109.     unsigned short            timestamp;
  110.     unsigned char            selftestfailurecheckpoint;
  111.     unsigned int            lbafirstfailure;
  112.     unsigned char            vendorspecific[15];
  113. } __attribute__ ((packed)) ata_smart_selftestlog_struct_t;
  114.  
  115. typedef struct ata_smart_selftestlog_s {
  116.     unsigned short            revnumber;
  117.     ata_smart_selftestlog_struct_t    selftest_struct[21];
  118.     unsigned char            vendorspecific[2];
  119.     unsigned char            mostrecenttest;
  120.     unsigned char            resevered[2];
  121.     unsigned char            chksum;
  122. } __attribute__ ((packed)) ata_smart_selftestlog_t;
  123.  
  124. #endif    /* _LINUX_HDSMART_H */
  125.